/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package rosic.WebServices;


import alertasseguridadservice.AlertasSeguridadService_Stub;
import java.rmi.RemoteException;
import java.util.Vector;
import rosic.GoogleMaps.Marcador;
import rosic.GoogleMaps.RutaMapa;
import servicioinformaciongeneralservice.ServicioInformacionGeneralService_Stub;

/**
 *
 * @author David
 */
public class WebServicesMock implements IServiciosWEB{

    AlertasSeguridadService_Stub wsAlertas;

    ServicioInformacionGeneralService_Stub wsAdministracionUsuario;

    public WebServicesMock() {
        wsAlertas= new AlertasSeguridadService_Stub();
        wsAdministracionUsuario = new ServicioInformacionGeneralService_Stub();
    }

    public String darNivelInseguridad(double latitud, double longitud) {
        try {
            return wsAlertas.darNivelPunto(Float.parseFloat(latitud + ""), Float.parseFloat(longitud + ""));
        } catch (RemoteException ex) {
            ex.printStackTrace();
        }
        return null;
    }

    public String darBarrio(double latitud, double longitud) {
        return "Las Aguas";
    }

    public String[] darListaDelitos(double latitud, double longitud) {
        try {
            return wsAdministracionUsuario.listarTiposInseguridad();
        } catch (RemoteException ex) {
            ex.printStackTrace();
        }
        return null;
    }

    public String[] darViasPosbiles() {
        String[] resp = new String[5];

        resp[0]= "Avenida NQS";
        resp[1]="Calle 53";
        resp[2]="Autopista Norte";
        resp[3]="Calle 26";
        resp[4]="Avenida Circunvalar";

        return resp;
    }

    public RutaMapa darRuta(String viaEscogida) {
        RutaMapa ruta = new RutaMapa();
        Vector puntos = new Vector();

        Marcador marcador1= new Marcador(4.60174, -74.06523, '1');
        Marcador marcador2= new Marcador(4.60114, -74.06523, '1');

        puntos.addElement(marcador1);
        puntos.addElement(marcador2);

        ruta.setPuntos(puntos);
        ruta.setLatitudCentro(4.60154);
        ruta.setLongitudCentro( -74.06553);
        ruta.setEstado("Congestionada");
        return ruta;
    }
    /**
     *
     * @param latitud
     * @param longitud
     * @return
     */
    public Vector darMarcadoresTodos(double latitud, double longitud) {
        try {
            Vector marcadores = new Vector();
            //        Marcador marcador1 = new Marcador(latitud+0.001, longitud+0.0005,'1');
            //        marcador1.setMensaje("robo con arma blanca");
            //        marcadores.addElement(marcador1);
            //
            //        Marcador marcador2 = new Marcador(latitud+0.002, longitud+0.0007,'2');
            //        marcador2.setMensaje("robo con arma de fuego");
            //        marcadores.addElement(marcador2);
            //
            //        Marcador marcador3 = new Marcador(latitud+0.003, longitud+0.0009,'3');
            //        marcador3.setMensaje("chalequeo");
            //        marcadores.addElement(marcador3);
            //
            //        Marcador marcador4 = new Marcador(latitud-0.001, longitud+0.0005,'4');
            //        marcador4.setMensaje("violacion");
            //        marcadores.addElement(marcador4);
            //
            //        Marcador marcador5 = new Marcador(latitud-0.005, longitud+0.0008,'5');
            //        marcador5.setMensaje("violacion");
            //        marcadores.addElement(marcador5);
            //
            //        Marcador marcador6 = new Marcador(latitud-0.005, longitud-0.0008,'6');
            //        marcador6.setMensaje("secuestro");
            //        marcadores.addElement(marcador6);
            String[] resultado = wsAlertas.listarPuntosInseguros(Float.parseFloat(latitud + ""), Float.parseFloat(longitud + ""));
            System.out.println(resultado);
            for(int i = 0; i < resultado.length; i++)
            {
                String[] datos = split(resultado[i], "/");
                Marcador marcador = new Marcador(Double.parseDouble(datos[0]), Double.parseDouble(datos[1]), 'a');
                marcador.setMensaje(datos[2]);
                marcadores.addElement(marcador);
            }
            return marcadores;
        } catch (RemoteException ex) {
            ex.printStackTrace();
        }
        return null;
    }

    private String[] split(String original, String caracter) {
        Vector nodes = new Vector();
        String separator = caracter;

        int index = original.indexOf(separator);
        while (index >= 0) {
            nodes.addElement(original.substring(0, index));
            original = original.substring(index + separator.length());
            index = original.indexOf(separator);
        }

        nodes.addElement(original);

        String[] result = new String[nodes.size()];
        if (nodes.size() > 0) {
            for (int loop = 0; loop < nodes.size(); loop++) {
                result[loop] = (String) nodes.elementAt(loop);
                System.out.println(result[loop]);
            }

        }

        return result;
    }


    public String[] darDelitosPosibles() {
        try {
            String[] resultado = wsAdministracionUsuario.listarTiposInseguridad();
            String[] resultadoFinal = new String[resultado.length];
            for(int i = 0; i < resultado.length; i++)
            {
                resultadoFinal[i] = split(resultado[i], "-")[1];
            }
            return resultadoFinal;
        } catch (RemoteException ex) {
            ex.printStackTrace();
        }
        return null;
       
    }

    public Vector darMarcadoresPorTipo(double latitud, double longitud, String tipoDelito) {
        try {
            Vector marcadores = new Vector();
            //        Marcador marcador1 = new Marcador(latitud+0.001, longitud+0.0005,'1');
            //
            //        marcadores.addElement(marcador1);
            //
            //        Marcador marcador2 = new Marcador(latitud+0.002, longitud+0.0007,'2');
            //
            //        marcadores.addElement(marcador2);
            //
            //        Marcador marcador3 = new Marcador(latitud+0.003, longitud+0.0009,'3');
            //
            //        marcadores.addElement(marcador3);
            String[] listado = wsAlertas.listarPuntosInsegurosTipo(Float.parseFloat(latitud + ""), Float.parseFloat("" + longitud), tipoDelito);
            for(int i = 0; i < listado.length; i++)
            {
                String[] valores = split(listado[i], "/");
                Marcador marcador = new Marcador(Double.parseDouble(valores[0]), Double.parseDouble(valores[1]), 'a');
                marcador.setMensaje(valores[2]);
                marcadores.addElement(marcador);
            }
            return marcadores;
        } catch (RemoteException ex) {
            ex.printStackTrace();
        }
        return null;
    }

    public String autenticar(String login, String password) {
        try {
            return wsAdministracionUsuario.validarUsuario(login, password);
        } catch (RemoteException ex) {
            ex.printStackTrace();
            return "NO_EXITO";
        }
    }

    public String[] darDestinosMisDestinos(String login) {
        try {
            String[] resultado = wsAdministracionUsuario.listarLugaresUsuario(login);
            String[] resultadoFinal = new String[resultado.length];
            for(int i = 0; i < resultado.length; i++)
            {
                resultadoFinal[i] = split(resultado[i], "/")[3];
            }
            //        String[] resp = new String[3];
            //        resp[0]="Mi Casa";
            //        resp[1]="Oficina";
            //        return resp;
            //        return resp;
            /*String[] resp = new String[1];
            resp[0]="NO";
            return resp;*/
            return resultadoFinal;
        } catch (RemoteException ex) {
            ex.printStackTrace();
        }
        return null;
    }

    public RutaMapa darRutaSegura(String destino, double latitudOrigen, double longitudOrigen) {
        RutaMapa ruta = new RutaMapa();
        Vector puntos = new Vector();
        Marcador marcador1 = new Marcador(4.60104, -74.06923, 'a');
        Marcador marcador2 = new Marcador(4.60304, -74.06923, 'a');
        Marcador marcador3 = new Marcador(4.60704, -74.06123, 'a');

        puntos.addElement(marcador1);
        puntos.addElement(marcador2);
        puntos.addElement(marcador3);
        ruta.setPuntos(puntos);

        return ruta;
    }

    public RutaMapa darRutaSegura(double latitud, double longitud, double latitudDestino, double LongitudDestino) {
         RutaMapa ruta = new RutaMapa();
        Vector puntos = new Vector();
        Marcador marcador1 = new Marcador(4.60104, -74.06923, 'a');
        Marcador marcador2 = new Marcador(4.60304, -74.06923, 'a');
        Marcador marcador3 = new Marcador(4.60704, -74.06123, 'a');

        puntos.addElement(marcador1);
        puntos.addElement(marcador2);
        puntos.addElement(marcador3);
        ruta.setPuntos(puntos);

        return ruta;
    }

}
